﻿//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using IBatisNet.DataMapper;
//using IBatisNet.DataMapper.MappedStatements;
//using Framework.Common;
//using IBatisNet.DataMapper.Configuration.ParameterMapping;
//using IBatisNet.DataMapper.Configuration.ResultMapping;
//using System.Data;
//using IBatisNet.DataMapper.Configuration.Cache;
//using IBatisNet.DataMapper.Scope;

//namespace Framework.Mybatis
//{
//    public partial class BaseHelper
//    {
//        #region Properties

//        ISqlMapper SqlMapper { get; set; }

//        string nameSpace;


//        #endregion

//        #region Constructor
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <param name="sqlmapper"></param>
//        public BaseHelper(String sqlmapper)
//            : this(sqlmapper, string.Empty)
//        {
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <param name="sqlmapper"></param>
//        /// <param name="ns">命名空间</param>
//        public BaseHelper(String sqlmapper, string ns)
//        {
//            this.SqlMapper = SqlMapperManager.GetMapper(sqlmapper);
//            nameSpace = ns;
//        }

//        #endregion

//        #region Get statement
//        /// <summary>
//        /// 获取sqlMap对应statement的完整id
//        /// </summary>
//        /// <param name="name"></param>
//        /// <returns></returns>
//        public virtual string GetStatementName(string name)
//        {
//            if (nameSpace.IsBlank())
//                return name;
//            return string.Format("{0}.{1}", nameSpace, name);
//        }
//        #endregion

//        #region for debug

//        /// <summary>
//        /// 得到运行时ibatis.net动态生成的SQL
//        /// </summary>
//        /// <param name="sqlMapper"></param>
//        /// <param name="statementName"></param>
//        /// <param name="paramObject"></param>
//        /// <returns></returns>
//        public virtual string GetRuntimeSql(string statementName, object paramObject)
//        {
//            string result = string.Empty;
//            try
//            {
//                IMappedStatement statement = SqlMapper.GetMappedStatement(statementName);
//                if (!SqlMapper.IsSessionStarted) SqlMapper.OpenConnection();
//                RequestScope scope = statement.Statement.Sql.GetRequestScope(statement, paramObject, SqlMapper.LocalSession);
//                result = scope.PreparedStatement.PreparedSql;
//            }
//            catch (Exception ex)
//            {
//                result = "获取SQL语句出现异常:" + ex.Message;
//                LogHelper.Fatal(result, ex);
//            }
//            return result;
//        }
//        #endregion

//        #region ibatis method
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <param name="cache"></param>
//        public virtual void AddCache(CacheModel cache)
//        {
//            SqlMapper.AddCache(cache);
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <param name="key"></param>
//        /// <param name="mappedStatement"></param>
//        public virtual void AddMappedStatement(string key, IMappedStatement mappedStatement)
//        {
//            SqlMapper.AddMappedStatement(key, mappedStatement);
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <param name="parameterMap"></param>
//        public virtual void AddParameterMap(ParameterMap parameterMap)
//        {
//            SqlMapper.AddParameterMap(parameterMap);
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <param name="resultMap"></param>
//        public virtual void AddResultMap(IResultMap resultMap)
//        {
//            SqlMapper.AddResultMap(resultMap);
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <returns></returns>
//        public virtual ISqlMapSession BeginTransaction()
//        {
//            return SqlMapper.BeginTransaction();
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <param name="openConnection"></param>
//        /// <returns></returns>
//        public virtual ISqlMapSession BeginTransaction(bool openConnection)
//        {
//            return SqlMapper.BeginTransaction(openConnection);
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <param name="isolationLevel"></param>
//        /// <returns></returns>
//        public virtual ISqlMapSession BeginTransaction(IsolationLevel isolationLevel)
//        {
//            return SqlMapper.BeginTransaction(isolationLevel);
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <param name="connectionString"></param>
//        /// <returns></returns>
//        public virtual ISqlMapSession BeginTransaction(string connectionString)
//        {
//            return SqlMapper.BeginTransaction(connectionString);
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <param name="openNewConnection"></param>
//        /// <param name="isolationLevel"></param>
//        /// <returns></returns>
//        public virtual ISqlMapSession BeginTransaction(bool openNewConnection, IsolationLevel isolationLevel)
//        {
//            return SqlMapper.BeginTransaction(openNewConnection, isolationLevel);
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <param name="connectionString"></param>
//        /// <param name="isolationLevel"></param>
//        /// <returns></returns>
//        public virtual ISqlMapSession BeginTransaction(string connectionString, IsolationLevel isolationLevel)
//        {
//            return SqlMapper.BeginTransaction(connectionString, isolationLevel);
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <param name="connectionString"></param>
//        /// <param name="openNewConnection"></param>
//        /// <param name="isolationLevel"></param>
//        /// <returns></returns>
//        public virtual ISqlMapSession BeginTransaction(string connectionString, bool openNewConnection, IsolationLevel isolationLevel)
//        {
//            return SqlMapper.BeginTransaction(connectionString, openNewConnection, isolationLevel);
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        public virtual void CloseConnection()
//        {
//            SqlMapper.CloseConnection();
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        public virtual void CommitTransaction()
//        {
//            SqlMapper.CommitTransaction();
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <param name="closeConnection"></param>
//        public virtual void CommitTransaction(bool closeConnection)
//        {
//            SqlMapper.CommitTransaction(closeConnection);
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <returns></returns>
//        public virtual ISqlMapSession CreateSqlMapSession()
//        {
//            return SqlMapper.CreateSqlMapSession();
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <param name="statementName"></param>
//        /// <param name="parameterObject"></param>
//        /// <returns></returns>
//        public virtual int Delete(string statementName, object parameterObject = null)
//        {
//            return SqlMapper.Delete(GetStatementName(statementName), parameterObject);
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        public virtual void FlushCaches()
//        {
//            SqlMapper.FlushCaches();
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <param name="name"></param>
//        /// <returns></returns>
//        public virtual CacheModel GetCache(string name)
//        {
//            return SqlMapper.GetCache(name);
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <returns></returns>
//        public virtual string GetDataCacheStats()
//        {
//            return SqlMapper.GetDataCacheStats();
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <param name="id"></param>
//        /// <returns></returns>
//        public virtual IMappedStatement GetMappedStatement(string id)
//        {
//            return SqlMapper.GetMappedStatement(id);
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <param name="name"></param>
//        /// <returns></returns>
//        public virtual ParameterMap GetParameterMap(string name)
//        {
//            return SqlMapper.GetParameterMap(name);
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <param name="name"></param>
//        /// <returns></returns>
//        public virtual IResultMap GetResultMap(string name)
//        {
//            return SqlMapper.GetResultMap(name);
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <param name="statementName"></param>
//        /// <param name="parameterObject"></param>
//        /// <returns></returns>
//        public virtual object Insert(string statementName, object parameterObject = null)
//        {
//            return SqlMapper.Insert(GetStatementName(statementName), parameterObject);
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <returns></returns>
//        public virtual ISqlMapSession OpenConnection()
//        {
//            return SqlMapper.OpenConnection();
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <param name="connectionString"></param>
//        /// <returns></returns>
//        public virtual ISqlMapSession OpenConnection(string connectionString)
//        {
//            return SqlMapper.OpenConnection(connectionString);
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <typeparam name="K"></typeparam>
//        /// <typeparam name="V"></typeparam>
//        /// <param name="statementName"></param>
//        /// <param name="parameterObject"></param>
//        /// <param name="keyProperty"></param>
//        /// <returns></returns>
//        public virtual IDictionary<K, V> QueryForDictionary<K, V>(string statementName, object parameterObject, string keyProperty)
//        {
//            return SqlMapper.QueryForDictionary<K, V>(GetStatementName(statementName), parameterObject, keyProperty);
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <typeparam name="K"></typeparam>
//        /// <typeparam name="V"></typeparam>
//        /// <param name="statementName"></param>
//        /// <param name="parameterObject"></param>
//        /// <param name="keyProperty"></param>
//        /// <param name="valueProperty"></param>
//        /// <returns></returns>
//        public virtual IDictionary<K, V> QueryForDictionary<K, V>(string statementName, object parameterObject, string keyProperty, string valueProperty)
//        {
//            return SqlMapper.QueryForDictionary<K, V>(GetStatementName(statementName), parameterObject, keyProperty, valueProperty);
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <typeparam name="TObject"></typeparam>
//        /// <param name="statementName"></param>
//        /// <param name="parameterObject"></param>
//        /// <returns></returns>
//        public virtual IList<TObject> QueryForList<TObject>(string statementName, object parameterObject = null)
//        {
//            return SqlMapper.QueryForList<TObject>(GetStatementName(statementName), parameterObject);
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <typeparam name="TObject"></typeparam>
//        /// <param name="statementName"></param>
//        /// <param name="parameterObject"></param>
//        /// <param name="skipResults"></param>
//        /// <param name="maxResults"></param>
//        /// <returns></returns>
//        public virtual IList<TObject> QueryForList<TObject>(string statementName, object parameterObject, int skipResults, int maxResults)
//        {
//            return SqlMapper.QueryForList<TObject>(GetStatementName(statementName), parameterObject, skipResults, maxResults);
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <typeparam name="TObject"></typeparam>
//        /// <param name="statementName"></param>
//        /// <param name="parameterObject"></param>
//        /// <returns></returns>
//        public virtual TObject QueryForObject<TObject>(string statementName, object parameterObject = null)
//        {
//            return SqlMapper.QueryForObject<TObject>(GetStatementName(statementName), parameterObject);
//        }

//        public T QueryForObject<T>(string statementName, object parameterObject, T instanceObject)
//        {
//            return SqlMapper.QueryForObject<T>(statementName, parameterObject, instanceObject);
//            ;
//        }

//        /// <summary>
//        /// 
//        /// </summary>
//        /// <param name="statementName"></param>
//        /// <param name="parameterObject"></param>
//        /// <returns></returns>
//        public virtual object QueryForObject(string statementName, object parameterObject = null)
//        {
//            return SqlMapper.QueryForObject(GetStatementName(statementName), parameterObject);
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        public virtual void RollBackTransaction()
//        {
//            SqlMapper.RollBackTransaction();
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <param name="closeConnection"></param>
//        public virtual void RollBackTransaction(bool closeConnection)
//        {
//            SqlMapper.RollBackTransaction(closeConnection);
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <param name="statementName"></param>
//        /// <param name="parameterObject"></param>
//        /// <returns></returns>
//        public virtual bool Update(string statementName, object parameterObject = null)
//        {
//            return SqlMapper.Update(GetStatementName(statementName), parameterObject) > 0;
//        }

//        #endregion
//    }
//}
